<!DOCTYPE html>
<html lang="zn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>属性名和属性值</title>
    <script>
        /*
            向对象中添加属性
            属性名：
                -对象的属性名不强制要求遵守标识符的规范
                    什么乱七八糟的名字都可以使用
                    但是我们使用时还是尽量按照标识符的规范去做
        */
        var obj = new Object();
        obj.name = "孙悟空";
        obj.var = "hello";

        console.log(obj.var)

        /*
            如果要使用特殊的属性名，不能采用.的方式来操作
                需要使用另一种方式：
                    语法：对象["属性名"] = 属性值
                    读取时也需要采用这种方式
                    使用[]这种形式去操作属性，更加的灵活，
                    在[]中可以直接传递一个变量，这样变量值是多少就会读取那个属性

        */
        // obj.123 = 789;
        obj["123"] = 789;
        obj["nihao"] = "你好";
        var n = "nihao";
        console.log(obj["123"]);
        console.log(obj[123]);
        console.log(obj[n]);

        /*
            属性值
                JS对象的属性值，可以是任意的数据类型
                    甚至也可以是一个对象
        */

        obj.test = true;
        obj.test = null;
        obj.test = undefined;

        var obj2 = new Object();
        obj2.name = "猪八戒";
        // 将obj2设置为obj的属性
        obj.test = obj2;
        console.log(obj.test.name);

        /*
            in运算符
                -通过该运算符可以检查一个对象中是否含有指定的属性
                    如果有则返回true，没有则返回false
            -语法：
                    "属性名" in 对象
        */

        // 检查obj中是否含有test2属性
        console.log("test2" in obj);
        console.log("test" in obj);
    </script>
</head>
<body>
    
</body>
</html>